/* import {
  escapeGetCodeData
} from '@/utils/vendor' */
import Vue from 'vue'

/**
 * @explain 空值转换
 * @example "" --> "--"
 */
const empty = (data) => {
  return data || '--'
}

/**
 * @explain 转换是否
 * @example 1231234123 --> 2018-1-1 13:10:10
 */
const yesOrNo = (data) => {
  if (data === '1') {
    return '是'
  } else {
    return '否'
  }
}

/**
 * @explain 毫秒数转正常格式 有时分秒的
 * @example 1231234123 --> 2018-1-1 13:10:10
 */
const getYearMonthHoursMinutesSeconds = (val) => {
  if (!val) return val
  var date = new Date(val)
  var y = date.getFullYear()
  var m = date.getMonth() + 1
  m = m < 10 ? ('0' + m) : m
  var d = date.getDate()
  d = d < 10 ? ('0' + d) : d
  var h = date.getHours()
  h = h < 10 ? ('0' + h) : h
  var minute = date.getMinutes()
  var second = date.getSeconds()
  minute = minute < 10 ? ('0' + minute) : minute
  second = second < 10 ? ('0' + second) : second
  var commonTime = y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
  return commonTime
}

/**
 * @explain 毫秒数转正常格式
 * @example  1231234123 --> 2019年01月01日
 */
const getYearMonthDate = (val) => {
  if (!val || val === '--' || String(val).indexOf('*') !== -1 || String(val).indexOf('年') !== -1 || String(val).indexOf('月') !== -1 || String(val).indexOf('-') !== -1 || String(val).indexOf('.') !== -1 || String(val).indexOf('日') !== -1) {
    return val
  }
  var unixTimestamp = new Date(parseInt(val))
  var commonTime = 1900 + unixTimestamp.getYear() + '年' + (1 + unixTimestamp.getMonth()) + '月' + unixTimestamp.getDate() + '日'
  return commonTime
}

/**
 * @explain 时间截取,去除时分秒，只留下日期
 * @example  2019年01月01日 01:01:59 --> 2019年01月01日
 */
const outHoursMinutesSeconds = (val) => {
  if (!val) return val
  var timeDate = val.substring(0, 10)
  return timeDate
}

/**
 * @explain 毫秒数转时长
 * @example  1231121234--> 128天2小时
 */
const mescToDay = (val) => {
  if (!val) return val
  var days = val / 1000 / 60 / 60 / 24
  var daysRound = Math.floor(days)
  var hours = val / 1000 / 60 / 60 - (24 * daysRound)
  var hoursRound = Math.floor(hours)
  var minutes = val / 1000 / 60 - (24 * 60 * daysRound) - (60 * hoursRound)
  var minutesRound = Math.floor(minutes)
  var seconds = val / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound)
  // 转换时间:', daysRound + '天', hoursRound + '时', minutesRound + '分', seconds + '秒'
  // var time = daysRound + '天' + hoursRound + '小时' + minutesRound + ':' + seconds
  var time = ''

  if (daysRound !== 0) {
    time = Math.floor(daysRound) + '天' + Math.floor(hoursRound) + '小时'
  } else if (hoursRound !== 0) {
    time = Math.floor(hoursRound) + '小时' + Math.floor(minutesRound) + '分'
  } else {
    time = Math.floor(minutesRound) + '分' + Math.floor(seconds) + '秒'
  }
  return time
}

/**
 * @explain 码表文字转换
 * @param value 码表code值
 * @param key 码表号 CA01
 * @example  111--> 文字
 */
/* const dict = (value, key,jsonFileName) => {
  if (Array.isArray(key)) {
    let json = {}
    key.forEach((item, index) => {
      json = Object.assign({}, json, escapeGetCodeData(item,jsonFileName))
    })
    return json[value]
  }
  return escapeGetCodeData(key,jsonFileName)[value] || value
} */
/**
 * @explain  只显示前后三位
 * @example  123456789--> 123*****789
 */
const cernoHideMiddle = (val) => {
  if (!val || val.length <= 6) return val
  var num = ''
  for (var i = 0; i < val.length - 6; i++) {
    num = num + '*'
  }
  return val.slice(0, 3) + num + val.slice(-3)
}

/**
 * @explain  没有代码及的转码
 * @example  dictCustom([{label:"全部",value:""}],relace) --->relace 代表如果数组中没有可转换的值  就显示relace的内容
 */
const dictCustom = (val, data, relace) => {
  if (data instanceof Array && data.length > 0) {
    for (var i = 0; i < data.length; i++) {
      if (data[i].value === val) {
        return data[i].label || data[i].id
      }
    }
    // 备用 如果不是数组里的内容 就用relace
    if (relace) return relace
  }
  return val
}

// 数组类型获取码值
export const customCode = (value, arr) => {
  return arr.filter(item => item.value === value).length > 0 && arr.filter(item => item.value === value)[0].text
}

export const filters = {
  customCode, // 自定义码集值获取
  // 自定义转码
  dictCustom,
  // 空值处理
  empty,
  // 转换是否
  yesOrNo,
  // 毫秒数转正常格式
  getYearMonthDate,
  // 毫秒数转正常格式 有时分秒的
  getYearMonthHoursMinutesSeconds,
  // 毫秒数转时长
  mescToDay,
  // 时间截取,去除时分秒，只留下日期
  outHoursMinutesSeconds,
  // 码表文字转换
  // dict,
  // 只显示前后三位
  cernoHideMiddle
}

// 导出的是对象，可以直接通过 key 和 value 来获得过滤器的名和过滤器的方法
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})
